using System.Collections;
using System.Windows.Forms;

namespace Framework
{
	// ReSharper disable UnusedParameter.Global
	///<summary>
	///</summary>
	public interface IFolderObject
	{
		///<summary>
		///</summary>
		FolderAttributes Attributes { get; }

		///<summary>
		///</summary>
		ColumnCollection Columns { get; }

		///<summary>
		///</summary>
		///<param name="column"></param>
		///<param name="folderObj"></param>
		///<returns></returns>
		int CompareTo(Column column, IFolderObject folderObj);

		///<summary>
		///</summary>
		DataObject DataObject { get; }

		///<summary>
		///</summary>
		///<param name="column"></param>
		///<returns></returns>

		object GetColumnValue(Column column);

		///<summary>
		///</summary>
		///<param name="opts"></param>
		///<returns></returns>
		string GetDisplayName(NameOptions opts);

		///<summary>
		///</summary>
		///<param name="open"></param>
		///<returns></returns>
		ShellIcon GetIcon(bool open);

		///<summary>
		///</summary>
		///<param name="owner"></param>
		///<returns></returns>
		IEnumerable GetItems(IWin32Window owner);

		///<summary>
		///</summary>
		///<param name="children"></param>
		///<returns></returns>
		ShellMenuItem[] GetMenuItems(IFolderObject[] children);

		///<summary>
		///</summary>
		ShellMenuItem[] MenuItems { get; }

		///<summary>
		///</summary>
		byte[][] PathData { get; }

		///<summary>
		///</summary>
		///<returns></returns>
		byte[] Persist();

		///<summary>
		///</summary>
		string RemoteComputer { set; }

		///<summary>
		///</summary>
		///<param name="data"></param>
		///<returns></returns>
		IFolderObject Restore(byte[] data);

		///<summary>
		///</summary>
		///<param name="owner"></param>
		///<param name="name"></param>
		///<param name="opts"></param>
		void SetName(IWin32Window owner, string name, NameOptions opts);

		///<summary>
		///</summary>
		///<param name="pathData"></param>
		void SetPath(byte[][] pathData);

		///<summary>
		///</summary>
		///<param name="pathData"></param>
		void SetFullPath(byte[][] pathData);

		// ReSharper restore UnusedParameter.Global
	} ;
}
